PythonのTkinter(ティーケーインター)を使うと、ボタンや入力欄のある画面(GUI)を作れます。この記事では、ウインドウを開いて、ラベル、テキストの入力欄、ボタンを付けるまでの基本をまとめます。
最後に、名前を入力してボタンを押すと「こんにちは〇〇さん」と表示する プログラムを作ります。
要点
tk.Tk()でウインドウを作り、最後にmainloop()を呼ぶと表示されます- 文字を表示するのは
Label、入力欄はEntry、ボタンはButtonです - ボタンを押したときに動かす関数は、
command=関数名で指定します - 関数は、ボタンを作る行より前に書いておく必要があります
ウインドウとラベルを作る
Tkinterは tk という短い名前で読み込んでおくと書きやすくなります。ウインドウは、ルートウインドウを作って mainloop() を呼ぶだけで表示できます。
import tkinter as tk
root = tk.Tk()
root.title("はじめてのTkinter")
root.geometry("400x300") # 幅x高さ(ピクセル)
label = tk.Label(root, text="こんにちは", bg="lightblue",
relief="ridge", bd=3, width=20, height=2)
label.pack()
root.mainloop()
pack() は、作った部品をウインドウに並べるための命令です。これを忘れると、部品が表示されません。

ラベルの見た目を変える
ラベルは、bg(背景色)、bd(枠の太さ)、relief(枠の形)、width と height(大きさ)で見た目を変えられます。
- 色は “red” のような名前でも、”#ff0000″ のような16進数でも指定できます
reliefには flat、raised、sunken、groove、ridge などがあります
いろいろ変えて試してみると、好みの見た目が見つかります。

テキストの入力欄を作る
ここからは、名前を入力するプログラムを作っていきます。まず、タイトル付きのウインドウとラベルを作ります。
win = tk.Tk()
win.title('text input & button')
win.geometry('300x100')
L1 = tk.Label(win, text='name input!')
L1.pack()
次に、文字を入力する箱(入力欄)を作ります。
E1 = tk.Entry(win, bd=10)
E1.pack()

bd=10 の部分は、ラベルと同じように、数字を変えると見た目を調整できます。
ボタンを作る
button = tk.Button(win, text='push↓!!', command=print_)
button.pack()
tk.Button() で押しボタンができます。カッコの中の意味は次のとおりです。
win:どのウインドウに入れるかtext='push↓!!':ボタンに表示する文字command=print_:ボタンを押したら何をするか。ここではprint_という関数を動かします
ボタンも、ラベルと同じように色や形を変えられます。
ボタンを押したときの関数を作る
command=print_ としたので、print_ という関数を作ります(print ではないので注意してください)。
def print_():
E2 = E1.get()
print('こんにちは{}さん'.format(E2))
E1.get() で入力欄に入っている文字を取り出してE2に入れ、print で「こんにちは(入力した文字)さん」と表示します。
関数はボタンより前に書く
Pythonは上から順に実行されるので、command=print_ の行より後に関数を書くと、「print_ がない」というエラーになります。関数は、ボタンを作る行より前に書いておいてください。
完成したコード
import tkinter as tk
win = tk.Tk()
win.title('text input & button')
win.geometry('300x100')
L1 = tk.Label(win, text='name input!')
L1.pack()
E1 = tk.Entry(win, bd=10)
E1.pack()
def print_():
E2 = E1.get()
print('こんにちは{}さん'.format(E2))
button = tk.Button(win, text='push↓!!', command=print_)
button.pack()
win.mainloop()
最後は必ず win.mainloop() で終わります。
動かしてみる
入力欄に名前を入れて「push↓!!」ボタンを押すと、こんな感じになります。

まとめ
tk.Tk()でウインドウを作り、mainloop()で表示します- 部品は
Label(文字)、Entry(入力欄)、Button(ボタン)で作り、pack()で並べます - ボタンを押したときの関数は
command=関数名で指定し、ボタンより前に書きます - 入力欄の文字は
get()で取り出せます
Tkinterで作ったアプリは、計算カードアプリの記事にまとめています。メッセージボックスで困ったときは、Tkinterのメッセージボックスで出る謎ウインドウの消し方を見てください。

独学プログラマー Python言語の基本から仕事のやり方まで